There are many approaches to updating graphics on a display device. One classic method, although rarely used, is the brute force approach where changes to the display graphic are rendered by the processor to memory, and the entire updated graphic is then copied directly to the frame buffer for display. However, this method is extremely inefficient because every pixel of the display device is updated in the frame buffer whether the data for that pixel has changed or not, and the processing resources consumed by this approach are enormous.
A second method for updating graphics on a display device is for the processor to use a revision list to track in memory each pixel that is changed, and then copy only the updated pixels from memory to the frame buffer. This approach has the advantage of copying to the frame buffer data pertaining only to those pixels which have changed; however, this approach is also resource intensive in regard to the memory necessary for maintaining the revision list which, in the worst case scenario, may require a change to every pixel. This, along with other shortcomings, significantly slows video processing.
A third method for updating graphics on a display device involves a complex algorithmic approach that analyzes individual revisions and groups them geometrically into small but efficient “revision regions” comprising both “dirty” (changed) pixels as well as “clean” (unchanged) pixels. The regions are then merged together for an update to the frame buffer. However, for complex revisions, such as a curves and other shapes that can only be broken down into a very large number of small rectangular regions, conducting the merge (among other tasks) is very expensive computationally.
What is needed in the art is a resource-efficient approach to updating graphics on a display device. The present invention addresses these shortcomings.